package GestionBilleterie;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 * Classe permettant d'accéder aux Clients de la base de données
 * @author Julien Reze
 */
class ClientBD {
    /**
     * Ajouter un client à la base de donnée
     * @param unClient le client à ajouter
     * @return l'id du client ajouté
     * @throws java.sql.SQLException
     */
    static int ajoutClient(Client unClient) throws SQLException {
        Statement st = null;
        st=BD.UserBD.getStatement();
        String rqt="INSERT INTO client(clie_nom,clie_prenom,clie_numtel,clie_email) VALUES('"+unClient.getNom()+"','"+unClient.getPrenom()+"','"+unClient.getNumTelephone()+"','"+unClient.getEmail()+"')";
        st.executeUpdate(rqt);
        BD.UserBD.close(st);
        List<Client> l=readAllClient();
        return (l.get(l.size()-1)).getId();
    }

    /**
     * Recherche un client dans la base de données grâce à son id
     * @param clientId
     * @return le Client trouvé
     * @throws java.sql.SQLException
     */
    static Client readClient(int clientId) throws SQLException {
        Statement st = BD.UserBD.getStatement( );
        Client c = null;
        ResultSet rs= st.executeQuery("SELECT * FROM client WHERE clie_id='"+clientId+"'");
        if(rs.next()){
            c=new Client(clientId,
                    rs.getString("clie_nom"),
                    rs.getString("clie_prenom"),
                    rs.getDate("clie_datenaissance"),
                    rs.getString("clie_adresse"),
                    rs.getString("clie_numtel"),
                    rs.getString("clie_email"));
        }
        BD.UserBD.close(st);
        return c;
    }

    /**
     * Retourne tous les clients de la base de données
     * @return la liste de clients
     * @throws java.sql.SQLException
     */
    static List<Client> readAllClient() throws SQLException {
        Statement st = BD.UserBD.getStatement();
        List<Client> lesClients=new ArrayList();
        ResultSet rs= st.executeQuery("SELECT * FROM client");
        while( rs.next( )){
            Client c=new Client(rs.getInt("clie_id"),
                rs.getString("clie_nom"),
                rs.getString("clie_prenom"),
                rs.getDate("clie_datenaissance"),
                rs.getString("clie_adresse"),
                rs.getString("clie_numtel"),
                rs.getString("clie_email"));
            lesClients.add(c);
        }
        BD.UserBD.close(st);
        return lesClients;
    }

    /**
     * Met à jour un client dans la BD
     * @param unClient le client à mettre à jour
     * @throws java.sql.SQLException
     */
    static void updateClient(Client unClient) throws SQLException {
        Statement st = BD.UserBD.getStatement( );
        String rqt="UPDATE client " +
                "SET clie_nom='"+unClient.getNom()+"'," +
                "clie_prenom='"+unClient.getPrenom()+"'," +
                "clie_email='"+unClient.getEmail()+"'," +
                "clie_numtel='"+unClient.getNumTelephone()+"' " +
                "WHERE clie_id='"+unClient.getId()+"'";
        st.executeUpdate(rqt);
        BD.UserBD.close(st);    
    }

}
